package net.huashitong.supervision.report.service;

import net.huashitong.supervision.report.dao.ReportDao;
import net.huashitong.supervision.report.dto.InsideReportDTO;
import net.huashitong.supervision.report.dto.LoginReportDTO;
import net.huashitong.supervision.report.dto.TaskReportDTO;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class ReportService {



    @Autowired
    private ReportDao dao;


    /**
     * 内部
     * @param sDate
     * @param eDate
     * @return
     */
    public List<List<String>> getInsideReport(String sDate, String eDate)
    {
        List<InsideReportDTO> insideTask = dao.getInsideTask(sDate, eDate);

//        创建时间	创建日期	提醒日期	轮次	任务状态	承办人	主任务名称	子任务名称
        List<List<String >>  list= new ArrayList<>();
        for (InsideReportDTO item : insideTask) {
            List<String> data = new ArrayList<>();
            data.add(item.getCreateDate());
            data.add(item.getCreateTime());
            data.add(item.getRemindDate());
            data.add(item.getTimeRound()+"");
            data.add(item.getTaskState());
            data.add(item.getName());
            data.add(item.getTaskName());
            data.add(item.getSubTaskName());
            list.add(data);
        }

        return list;
    }


    /**
     * 普通任务
     * @param sDate
     * @param eDate
     * @return
     */
    public List<List<String>> getTaskReport(String sDate,String eDate)
    {
        List<TaskReportDTO> taskListReport = dao.getTaskListReport(sDate, eDate);
        List<List<String >>  list= new ArrayList<>();
        //创建日期	创建时间	任务期限	单位名称	任务状态	轮次	任务名称	主任务名称
        for (TaskReportDTO item : taskListReport) {
            List<String> data = new ArrayList<>();
            data.add(item.getCreateDate());
            data.add(item.getCreateTime());
            data.add(item.getTimeLimit());
            data.add(item.getDeptName());
            data.add(item.getType());
            data.add(item.getTimeRound()+"");
            data.add(item.getTaskSubName());
            data.add(item.getTaskMainName());
            list.add(data);

        }
        return list;
    }

    public List<List<String>> getLoginList(String sDate,String eDate){
        List<LoginReportDTO> loginList = dao.getLoginList(sDate, eDate);
        List<List<String >>  list= new ArrayList<>();
        //账户名称 ，登陆次数
        for (LoginReportDTO item : loginList) {
            List<String> data= new ArrayList<>();
            data.add(item.getName());
            data.add(item.getLoginTime()+"");
            list.add(data);
        }
        return  list;
    }





    public  HSSFWorkbook exportExcel(HSSFWorkbook workbook,int num,String sheetTitle,String[] headers,List<List<String>> res
    )
    {
        HSSFSheet sheet = workbook.createSheet();
        workbook.setSheetName(num,sheetTitle);

        sheet.setDefaultColumnWidth(20);

        HSSFCellStyle style = workbook.createCellStyle();
//        XSSFCellStyle style = cellStyle;
// 设置这些样式
        style.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 生成一个字体
        HSSFFont font = workbook.createFont();
        font.setColor(HSSFColor.BLACK.index);
//设置字体所在的行高度
        font.setFontHeightInPoints((short) 20);
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 把字体应用到当前的样式
        style.setFont(font);
        style.setWrapText(true);

        HSSFRow row = sheet.createRow(0);


        for (int i = 0; i < headers.length; i++) {

            HSSFCell cell = row.createCell(i);
            cell.setCellStyle(style);

            HSSFRichTextString text = new HSSFRichTextString(headers[i]);
            cell.setCellValue(text.toString());
        }


        if(res!=null)
        {

            int index =1;

            for (List<String> item : res) {
                HSSFRow valCell = sheet.createRow(index);
                int cellIndex =0;
                for (String str : item) {
                    HSSFCell cell = valCell.createCell(cellIndex);
                    cell.setCellValue(str);
                    cellIndex++;
                }
                index++;
            }


        }

        return workbook;

    }





}
